﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using Entidades;

namespace Acceso_a_Datos
{
    public class PalabraJugadaDatos
    {
        public List<PalabraJugadaEntidades> Obtener(int idUsuario, int idGrilla)
        {
            string consulta = "SELECT IdUsuario, IdGrilla, NumeroPalabra FROM PalabrasJugadas "
                + "WHERE IdUsuario = @idUsuario AND IdGrilla = @idGrilla";

            SqlParameter[] parametros = new SqlParameter[2];
            parametros[0] = new SqlParameter("idUsuario", idUsuario);
            parametros[1] = new SqlParameter("idGrilla", idGrilla);

            ConexionBD conexion = new ConexionBD();
            DataTable tablaDatos = conexion.SelectQuery(consulta, parametros);            
            
            List<PalabraJugadaEntidades> palabrasJugadas = new List<PalabraJugadaEntidades>();
            if (tablaDatos.Rows.Count > 0)
            {
                foreach (DataRow fila in tablaDatos.Rows)
                {
                    PalabraJugadaEntidades palabraJugada = new PalabraJugadaEntidades();
                    palabraJugada.IdUsuario = fila.Field<int>("Idusuario");
                    palabraJugada.IdGrilla = fila.Field<int>("IdGrilla");
                    palabraJugada.NumeroPalabra = fila.Field<int>("NumeroPalabra");
                    palabrasJugadas.Add(palabraJugada);
                }

                return palabrasJugadas;
            }
            else
                return null;
        }

        public void Insertar(PalabraJugadaEntidades palabraJugada)
        {
            string consulta = "INSERT INTO PalabrasJugadas VALUES (@idUsuario, @idGrilla, @numeroPalabra)";

            SqlParameter[] parametros = new SqlParameter[3];
            parametros[0] = new SqlParameter("idUsuario", palabraJugada.IdUsuario);
            parametros[1] = new SqlParameter("idGrilla", palabraJugada.IdGrilla);
            parametros[2] = new SqlParameter("numeroPalabra", palabraJugada.NumeroPalabra);

            ConexionBD conexion = new ConexionBD();
            conexion.ExecuteNonQuery(consulta, parametros);
        }

        public void Actualizar(PalabraJugadaEntidades palabraJugada)
        {
            string consulta = "UPDATE PalabrasJugadas SET Idusuario = @idUsuario, IdGrilla = @idGrilla, NumeroPalabra = @numeroPalabra "
                + "WHERE IdUsuario = @idUsuario AND IdGrilla = @idGrilla";

            SqlParameter[] parametros = new SqlParameter[3];
            parametros[0] = new SqlParameter("idUsuario", palabraJugada.IdUsuario);
            parametros[1] = new SqlParameter("idGrilla", palabraJugada.IdGrilla);
            parametros[2] = new SqlParameter("numeroPalabra", palabraJugada.NumeroPalabra);

            ConexionBD conexion = new ConexionBD();
            conexion.ExecuteNonQuery(consulta, parametros);
        }

        public void BorrarPalabrasJugadas(int idUsuario)
        {
            string consulta = "DELETE FROM PalabrasJugadas WHERE IdUsuario = @idUsuario";

            SqlParameter[] parametros = new SqlParameter[1];
            parametros[0] = new SqlParameter("idUsuario", idUsuario);

            ConexionBD conexion = new ConexionBD();
            conexion.ExecuteNonQuery(consulta, parametros);
        }
    }
}
